/**

 @Name：layuiAdmin iframe版主入口
 @Author：贤心
 @Site：http://www.layui.com/admin/
 @License：LPPL

 */

layui.extend({
	setter: 'config' //配置模块
	, admin: 'lib/admin' //核心模块
	, view: 'lib/view' //视图渲染模块
}).define(['setter', 'admin'], function (exports) {
	var setter = layui.setter
			, element = layui.element
			, admin = layui.admin
			, tabsPage = admin.tabsPage
			, view = layui.view

			//打开标签页
			, openTabsPage = function (url, text) {
				//遍历页签选项卡
				var matchTo
						, tabs = $('#LAY_app_tabsheader>li')
						, path = url.replace(/(^http(s*):)|(\?[\s\S]*$)/g, '');

				tabs.each(function (index) {
					var li = $(this)
							, layid = li.attr('lay-id');

					if (layid === url) {
						matchTo = true;
						tabsPage.index = index;
					}
				});

				text = text || '新标签页';

				if (setter.pageTabs) {
					//如果未在选项卡中匹配到，则追加选项卡
					if (!matchTo) {
						$(APP_BODY).append([
							'<div class="layadmin-tabsbody-item layui-show">'
							, '<iframe src="' + url + '" frameborder="0" class="layadmin-iframe"></iframe>'
							, '</div>'
						].join(''));
						tabsPage.index = tabs.length;
						element.tabAdd(FILTER_TAB_TBAS, {
							title: '<span>' + text + '</span>'
							, id: url
							, attr: path
						});
					}
				} else {
					var iframe = admin.tabsBody(admin.tabsPage.index).find('.layadmin-iframe');
					iframe[0].contentWindow.location.href = url;
				}

				//定位当前tabs
				element.tabChange(FILTER_TAB_TBAS, url);
				admin.tabsBodyChange(tabsPage.index, {
					url: url
					, text: text
				});
			}

			, APP_BODY = '#LAY_app_body', FILTER_TAB_TBAS = 'layadmin-layout-tabs'
			, $ = layui.$, $win = $(window);

	//初始
	if (admin.screen() < 2) admin.sideFlexible();

	//将模块根路径设置为 controller 目录
	layui.config({
		base: setter.base + 'modules/'
	});

	//扩展 lib 目录下的其它模块
	layui.each(setter.extend, function (index, item) {
		var mods = {};
		mods[item] = '{/}' + setter.base + 'lib/extend/' + item;
		layui.extend(mods);
	});

	view().autoRender();

	//加载公共模块
	layui.use('common');

	//对外输出
	exports('index', {
		openTabsPage: openTabsPage
	});
});
